/*
 * Shift.java
 * 
 * Copyright (c) 2008, Marshall Scorcio, Ralph Holzmann, 
 *                     Stewart Sweet, Tyler Hoersch, Jeffery Van Handel
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the University of Wisconsin Oshkosh nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS'' AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 */
import java.util.*;

public class Shift extends TimeBlock implements java.io.Serializable
{
    Vector<Employee> scheduledEmployees;
    
    public Shift(TimeBlock time)
    {
        super(time);
        scheduledEmployees = new Vector<Employee>();
    }

    public Shift(TimeBlock time, Vector<Employee> employees)
    {
        super(time);
        scheduledEmployees = employees;   
    }
    
    public Shift(String startEnd)
    {
        super(startEnd);
        scheduledEmployees = new Vector<Employee>();
    }
    
    public Shift(String startEnd, Vector<Employee> employees)
    {
        super(startEnd);
        scheduledEmployees = employees;
    }
  
    public String getEmployeeNames()
    {
        String formatted = "";
        for(int i = 0; i < scheduledEmployees.size(); i++)
        {
            formatted += scheduledEmployees.elementAt(i).getName() + " ";
        }
        
        return formatted;
    }
    
    public Vector<Employee> getEmployees()
    {
        return scheduledEmployees;
    }
    
    public int getNumberOfEmployees()
    {
        return scheduledEmployees.size();
    }
    
    public Employee getEmployeeAt(int index)
    {
        return scheduledEmployees.elementAt(index);
    }
    
    public void removeEmployee(Employee person)
    {
        for (int i = 0; i < scheduledEmployees.size(); i++)
        {
            if (scheduledEmployees.elementAt(i).getName().equals(person.getName()))
            {
                scheduledEmployees.removeElementAt(i);
            }
        }
    }
    
    public void addEmployee(Employee person)
    {
        scheduledEmployees.add(person);
    }
    
    @Override
    public String toString()
    {
        StringBuilder formatted = new StringBuilder(super.toString() + "   ");
        for (int i = 0; i < scheduledEmployees.size(); i++)
        {
            if (i != 0)
            {
                formatted.append(", ");
            }
            
            formatted.append(scheduledEmployees.elementAt(i).getName());
        }
        return formatted.toString();
    }
    
    public String timeToString()
    {
        return super.toString();
    }
}
